package com.jiangyg.mall.coupon.controller;

import com.jiangyg.mall.core.support.restful.Pagination;
import com.jiangyg.mall.core.support.restful.Result;
import com.jiangyg.mall.coupon.dto.HomeSubjectDTO;
import com.jiangyg.mall.coupon.service.HomeSubjectService;
import com.jiangyg.mall.coupon.vo.HomeSubjectVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 类描述：首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】控制器
 *
 * @author jiangyg
 * @version email@jiangyg.com
 * @date 2021-10-18 21:33:06
 */
@RestController
@RequestMapping("/coupon/home/subject")
public class HomeSubjectController {

    /**
     * 首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】接口
     */
    private final HomeSubjectService homeSubjectService;

    @Autowired
    public HomeSubjectController(HomeSubjectService homeSubjectService) {
        this.homeSubjectService = homeSubjectService;
    }

    /**
     * 功能描述：首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】分页查询
     *
     * @param request    请求
     * @param pagination 分页参数
     * @return 返回分页首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
     */
    @ResponseBody
    @PostMapping("/select")
    public Result<Pagination<HomeSubjectVO>> select(HttpServletRequest request, @RequestBody Pagination<HomeSubjectVO> pagination) throws Exception {
        return Result.ok(homeSubjectService.selectPagination(pagination));
    }

    /**
     * 功能描述：保存或者修改首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
     *
     * @param request 请求
     * @param dto     首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
     * @return 结果
     */
    @ResponseBody
    @PostMapping("/save")
    public Result<Object> save(HttpServletRequest request, @RequestBody @Validated HomeSubjectDTO dto) throws Exception {
        return Result.saveOrUpdate(homeSubjectService.saveOrUpdate(dto));
    }

    /**
     * 功能描述：根据ID获取首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
     *
     * @param request 请求
     * @param homeSubjectId  首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】ID
     * @return 结果
     */
    @ResponseBody
    @PostMapping("/info")
    public Result<HomeSubjectVO> info(HttpServletRequest request, @RequestParam(name = "homeSubjectId") Long homeSubjectId) throws Exception {
        return Result.ok(homeSubjectService.selectById(homeSubjectId));
    }

    /**
     * 功能描述：删除首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
     *
     * @param request 请求
     * @param homeSubjectIds 批量删除的首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】ID
     * @return 结果
     */
    @ResponseBody
    @PostMapping("/delete")
    public Result<Object> delete(HttpServletRequest request, @RequestBody List<Long> homeSubjectIds) {
        return Result.delete(homeSubjectService.delete(homeSubjectIds));
    }

}
